/*
 *  ExposedVariable.h
 *  Fridge
 *
 *  Created by Jeremy Abel on 6/30/12.
 *
 */

#pragma once

enum EXPOSED_VARIABLE_TYPE
{
	EXPOSED_VARIABLE_SLIDER,
	EXPOSED_VARIABLE_NUMBER,
	EXPOSED_VARIABLE_COLOUR
};

class ExposedVariable
{
	public:
		
		ExposedVariable();
		ExposedVariable( const ExposedVariable* pxExposedVariable );
		
		void						SetName( const char* szName );
		const char*					GetName() const { return m_szName; };
		const char*					GetName() { return m_szName; };
	
		void						SetValue( double dValue ) { m_dValue = dValue; };
		const double				GetValue() { return m_dValue; };
		const double				GetValue() const { return m_dValue; };
	
		void						SetVariableType( const EXPOSED_VARIABLE_TYPE xVariableType ) { m_xVariableType = xVariableType; };
		const EXPOSED_VARIABLE_TYPE	GetVariableType() { return m_xVariableType; };
		const EXPOSED_VARIABLE_TYPE	GetVariableType() const { return m_xVariableType; };
	
		void						SetShowLabel( const bool bShowLabel ) { m_bShowLabel = bShowLabel; };
		const bool					GetShowLabel() { return m_bShowLabel; };
		const bool					GetShowLabel() const { return m_bShowLabel; };
		
		void						SetShowScale( const bool bShowScale ) { m_bShowScale = bShowScale; };
		const bool					GetShowScale() { return m_bShowScale; };
		const bool					GetShowScale() const { return m_bShowScale; };

		void						SetShowMinMaxLabels( const bool bShowMinMaxLabels ) { m_bShowMinMaxLabels = bShowMinMaxLabels; };
		const bool					GetShowMinMaxLabels() { return m_bShowMinMaxLabels; };
		const bool					GetShowMinMaxLabels() const { return m_bShowMinMaxLabels; };

		void						SetSliderLimits( const float fSliderMin, const float fSliderMax ) { m_fSliderMin = fSliderMin; m_fSliderMax = fSliderMax; };
		const float					GetSliderMin() { return m_fSliderMin; };
		const float					GetSliderMin() const { return m_fSliderMin; };
		const float					GetSliderMax() { return m_fSliderMax; };
		const float					GetSliderMax() const { return m_fSliderMax; };
	
	private:
		
		char*					m_szName;
		EXPOSED_VARIABLE_TYPE	m_xVariableType;
		double					m_dValue;
		float					m_fSliderMin;
		float					m_fSliderMax;
		bool					m_bShowLabel;
		bool					m_bShowScale;
		bool					m_bShowMinMaxLabels;
};

// eof
